home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs07.d81
/
tbasic.arc
/
SET SPRITES
/
TB
(
.txt
)
Wrap
Commodore BASIC
|
2009-10-10
|
3KB
|
109 lines
0 REM SET SPRITES(AUG 25/84) :
1 :
2 REM 6 STATEMENTS, 0 FUNCTIONS
3 :
4 REM KEYWORD CHARACTERS:27
5 :
6 REM KEYWORD ROUTINE LINE SER#
7 REM S/COLSPR COLSP 3530 031
8 REM S/SSPR SSP 3550 032
9 REM S/CSPR CSP 3560 033
10 REM S/XSPR XSP 3574 034
11 REM S/YSPR YSP 3628 035
12 REM S/XYSPR XYSP 3656 036
13 :
14 REM U/CHKSPR(3664/037)
15 REM U/RASCHK(3676/038)
16 REM D/POWERS(3694/039)
17 :
18 REM============================
19 :
108 .ASC"COLSP[210]SSP[210]CSP[210]"
109 .ASC"XSP[210]YSP[210]XYSP[210]"
1108 .WORD COLSPR-1,SSP-1,CSP-1
1109 .WORD XSP-1,YSP-1,XYSP-1
3530 COLSP JSR CHS1 ;GET SPRITE NUMBER
3532 TXA
3534 PHA ;SAVE IT
3536 JSR $V7F1 ;CHECK COMMA AND
3538 PLA ;GET COLOUR
3540 TAY
3542 TXA
3544 STA $D027,Y ;POKE COLOUR
3546 RTS
3548 ;
3550 SSP JSR CHS1 ;GET SPRITE NUMBER
3552 LDA POWERS,X ;SET THE BIT
3554 ORA $D015 ;OR SPRITE ENABLE
3556 BNE CSP1 ;RGSTR,TURN ON
3558 ;
3560 CSP JSR CHS1 ;GET SPRITE NUMBER
3562 LDA POWERS,X ;SET THE BIT
3564 EOR #$FF ;MASK IT OUT
3566 AND $D015 ;AND SPRITE ENABLE
3568 CSP1 STA $D015 ;RGST,TURN OFF
3570 RTS
3572 ;
3574 XSP JSR CHS1 ;GET SPRITE NUMBER
3576 STX T3 ;SAVE IT
3578 JSR $AEFD ;CHECK FOR COMMA
3580 JSR $AD8A ;GET X POSITION
3582 JSR $B7F7 ;CONVERT TO INTEGER
3584 LDA $15 ;GET HIGH BYTE
3586 CMP #2 ;BRANCH IF
3588 BCS XS3 ;TOO HIGH
3590 LDX T3 ;GET SPRITE NUMBER
3592 ROR ;PUT MSB IN CARRY
3594 LDA POWERS,X ;SET THE BIT
3596 BCC XS1 ;BRANCH ON 0 MSB
3598 ORA $D010 ;OR MSB REGISTER
3600 BCS XS2 ;SKIP
3602 EOR #$FF ;MASK THE BIT
3604 AND $D010 ;CLEAR THE BIT
3606 TAY ;SAVE MSB
3608 TXA ;SPRITE NUMBER
3610 ASL ;DOUBLE IT
3612 TAX ;USE AS INDEX
3614 LDA $14 ;GET X LOW BYTE
3616 JSR RASCHK ;WAIT FOR RASTER
3618 STY $D010 ;WRITE MSB
3620 STA $D000,X ;WRITE LOW BYTE
3622 RTS
3624 SX3 JMP $B248 ;ILLEGAL QUANTITY
3626 ;
3628 YSP JSR CHS1 ;GET SPRITE NUMBER
3630 YS1 TXA ;DOUBLE IT
3632 ASL
3634 PHA ;SET IT ASIDE
3636 JSR $B7F1 ;COMMA, Y-POSITION
3638 TXA ;MOVE IT TO .Y
3640 TAY
3642 PLA ;GET 2*(SPRITE#)
3644 TAX ;USE IT AS INDEX FOR
3646 TYA ;Y-POSITION
3648 JSR RASCHK ;WAIT FOR RASTER
3650 STA $D001,X ;WRITE POSITION
3652 RTS
3654 ;
3656 XYSP JSR XSP ;WRITE X-POSITION
3658 LDX T3 ;GET SPRITE #
3660 BPL YS1 ;WRITE Y-POSITION
3662 ;
3664 CHKSPR JSR $73 ;BUMP CHRGET PTR
3666 CHS1 JSR $B79E ;GET SPRITE NUMBER
3668 CPX #8 ;MUST BE UNDER 8
3670 BCS XS3
3672 RTS
3674 ;
3676 RASCHK PHA ;STORE ACCUMULATOR
3678 RAS1 LDA $D012 ;READ RASTER LINE
3680 SBC $D001,X ;SUBTRACT SPRITE-Y
3682 BCC RAS2
3684 CMP #$2B ;WAIT TIL
3686 BCC RAS1 ;CLEAR OF SPRITE
3688 RAS2 PLA
3690 RTS
3692 ;
3694 POWERS .BYTE 1,2,4,8,16,32,64,128
3696 ;